/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.persistence;

import com.losalpes.persistence.entity.Mueble;
import com.losalpes.persistence.entity.TipoMueble;
import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author MER
 */
@Local
public interface ICatalogPersistenceServices {

    /**
     * Lista de muebles
     * @return Colección de muebles
     */
    List<Mueble> findAllMuebles();

    /**
     * Adiciona un mueble
     * @param cMueble
     */
    void add(Mueble cMueble);

    /**
     * Actualiza un mueble
     * @param obj Mueble
     */
    void update(Object obj);

    /**
     * Actualiza precio y cantidad de un mueble
     * @param obj Mueble
     */
    void updatePrecioCantidad(Object obj);

    /**
     * Elimina mueble
     * @param obj Mueble
     */
    void delete(Object obj);

    /**
     * Busca un mueble por referencia
     * @param ref Referencia del mueble a buscar
     * @return Objeto de tipo Mueble
     */
    Object findByRef(Object ref);

    /**
     * Busca muebles por tipo
     * @param typ Tipo de mueble a buscar
     * @return Objeto de tipo Mueble
     */
    List<Mueble> findByType(TipoMueble tipoMueble);

    /**
     * Actualiza precio y cantidad por referencia
     * @param ref Referencia del mueble
     * @param precio Precio del mueble
     * @param cantidad Cantidad de muebles en inventario
     * @return Objeto de tipo Mueble
     */
    Object setPrecioCantidadByRef(Object ref, double precio, double cantidad);

    /**
     * Busca muebles disponibles
     * @return Colección de muebles disponibles
     */
    public java.util.ArrayList<com.losalpes.persistence.entity.Mueble> findMueblesDisponibles();

    /**
     * Busca muebles disponibles por referencia
     * @param ref Referencia del mueble
     * @return Mueble
     */
    public com.losalpes.persistence.entity.Mueble findMuebleDisponibleByRef(java.lang.String ref);
       
}
